package 题目集.队列;


import org.junit.Test;

/**
 * https://leetcode.cn/problems/find-the-first-player-to-win-k-games-in-a-row/?envType=daily-question&envId=2024-10-24
 */
public class demo02_找到连续赢K场比赛的第一位玩家 {

    /**
     * 打擂台:
     * 第一个结论思考：如果一个人在k次之前输了，还有可能成为答案吗？
     * 不可能，因为下一轮到他时，它要么合打败他的人比，要么和比打败他更强的人比。
     * 第二结论思考：如果跑完第一轮，还没有人赢下k次，那么答案是什么？
     * 答案是最大值，最大值会作为擂主一直赢下去。
     *
     * @param skills
     * @param k
     * @return
     */
    public int findWinningPlayer(int[] skills, int k) {
        int win = 0;
        int cnt = 0;
        for (int i = 1; i < skills.length; i++) {
            if (skills[win] < skills[i]) {
                cnt = 0;
                win = i;    /*新擂主*/
            }
            cnt++;
            if (cnt >= k) break;
        }
        return win;
    }


    @Test
    public void test() {
        int[] arr = {19, 3, 6, 16, 10, 9, 2};
        int k = 422917785;
        System.out.println(findWinningPlayer(arr, k));
    }
}
